Выборка значений геометрических типов
Значения геометрических типов, предварительно сохраненные в таблице, могут быть выбраны в WKT/WKB-формате с помощью соответствующих функций (см. приложения 1, 2).
В предикате равенства в поисковых запросах с геометрическими типами данных необходимо задавать одновременно значение геометрического типа и идентификатор его координат (с помощью функции SRID), например,
create or replace table geo_test (p point); insert into geo_test(p) values (PointFromText('point (1 1)')); insert into geo_test(p) values (PointFromText('point (1 2)', 1)); insert into geo_test(p) values (PointFromText('point (1 3)', 1)); insert into geo_test(p) values (PointFromText('point (1 2)', 2)); insert into geo_test(p) values (PointFromText('point (1 2)', 3)); select count(*) from geo_test where p='point(1 2)'; select count(*) from geo_test where p='point(1 2)'and srid(p)=2; create or replace table geom (g geometry); select x(g) from geom where GeometryType(g)='POINT';
Тип графических данных конкретного столбца хранится в элементе Prec поля $$$S24 системной таблицы $$$ATTRI.
Кроме того, информацию о столбцах с геометрическими типами данных можно
получить из представления GEOMETRY_COLUMNS, создать которое можно с помощью
скрипта geo_cat.sql
, размещаемого в подкаталоге /dict
установочного каталога
СУБД ЛИНТЕР:
create view GEOMETRY_COLUMNS AS select cast ('' as varchar(256)) as f_table_catalog, cast ($$$s34 as varchar(256)) as f_table_schema, cast ($$$s13 as varchar(256)) as f_table_name, cast ($$$s23 as varchar(256)) as f_geometry_column, cast ( 2 as integer ) as coord_dimension, cast (-1 as integer) as srid from LINTER_SYSTEM_USER.$$$sysrl, LINTER_SYSTEM_USER.$$$attri, LINTER_SYSTEM_USER.$$$usr where $$$s11 = $$$s21 and $$$s12 = $$$s31 and $$$s32 = 0 and GetByte($$$S24,1) = 9 and GetByte($$$S24,2) > 0;